package es.biciapp.data;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import es.biciapp.logic.Usuario;

public class QueryUsuario {

	public static List<Usuario> getUsuarios() {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		Usuario actual = new Usuario();
		Connection conn;
		PreparedStatement ps;
		String url;
		ResultSet rs;
		try {
			Class.forName("org.sqlite.JDBC");
			url = "jdbc:sqlite:BiciApp.db";
			conn = DriverManager.getConnection(url, "", "");
			ps = conn.prepareStatement("SELECT * FROM USUARIO ;");
			rs = ps.executeQuery();
			while (rs.next()) {
				actual = new Usuario();
				actual.setNick(rs.getString("NICK_USUARIO"));
				actual.setNombre(rs.getString("NOMBRE"));
				actual.setPassword(rs.getString("PASSWORD"));
				actual.setEmail(rs.getString("EMAIL"));
				actual.setPreguntaSecreta(rs.getString("PREGUNTA_SECRETA"));
				actual.setRespuestaSecreta(rs.getString("RESPUESTA_SECRETA"));
				usuarios.add(actual);
			}
			conn.close();
			ps.close();
			rs.close();
			return usuarios;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error en la consulta getUsuarios()");
			return new ArrayList<Usuario>();
		}
	}

	public static HashMap<String, String> getPassword(String usuario) {

		HashMap<String, String> mapa = new HashMap<>();
		Connection conn;
		PreparedStatement ps;
		String url;
		ResultSet rs;
		try {
			Class.forName("org.sqlite.JDBC");
			url = "jdbc:sqlite:BiciApp.db";
			conn = DriverManager.getConnection(url, "", "");
			ps = conn
					.prepareStatement("SELECT NICK_USUARIO,PASSWORD FROM USUARIO WHERE NICK_USUARIO = ?");
			ps.setString(1, usuario);
			rs = ps.executeQuery();
			while (rs.next()) {
				mapa.put(rs.getString("NICK_USUARIO"), rs.getString("PASSWORD"));
			}
			ps.close();
			rs.close();
			conn.close();
			return mapa;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error en la consulta getPassword()");
			return new HashMap<String, String>();
		}
	}

	public static boolean insertarUsuario(String nick, String nombre,
			String password, String email, String preguntaSecreta,
			String respuestaSecreta) {
		Connection conn;
		PreparedStatement ps;
		String url;
		try {
			Class.forName("org.sqlite.JDBC");
			url = "jdbc:sqlite:BiciApp.db";
			conn = DriverManager.getConnection(url, "", "");
			ps = conn
					.prepareStatement("INSERT INTO USUARIO VALUES (?, ?, ?, ?, ?, ?);");
			ps.setString(1, nick);
			ps.setString(2, nombre);
			ps.setString(3, password);
			ps.setString(4, email);
			ps.setString(5, preguntaSecreta);
			ps.setString(6, respuestaSecreta);
			ps.executeUpdate();
			ps.close();
			conn.close();
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al insertar un nuevo usuario");
			return false;
		}
	}

	public static void main(String[] args) {
		// CreateDB.createTableUsuario();
		// System.out.println(QueryUsuario.getUsuarios().size());
		// System.out.println(QueryUsuario.getUsuarios().toString());
		// QueryUsuario.insertarUsuario("Nick", "nombre", "password", "email",
		// "preguntaSecreta", "respuestaSecreta");
		System.out.println(QueryUsuario.getUsuarios().size());
		System.out.println(QueryUsuario.getUsuarios().toString());
	}

}
